package io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * @author 徐志荣
 * @date 2023/3/30 10:21
 */
public class IODemo6 {
    public static void main(String[] args) throws IOException {

        //----------1---------------
        //这个过程,相当于C中的fopen,文件的打开操作~
        //这个文件 打开的意思就是
        //让当前这个变量,能够和硬盘上的文件关联起来
        //就相当于有了遥控器
        InputStream inputStream = new FileInputStream("D:/test.txt");
        //InputStream 用来进行IO IO不仅仅是是读写硬盘的文件,还可以读写别的,(后面学网络编程,还能读写网卡)

        //执行中间,出现一些问题,比如: return或者抛异常,就会导致close 执行不到了

        //这个关闭操作,非常重要!!!
        //文件这里的资源,则需要手动释放~~ 主要是"文件描述符"
        inputStream.close();


        //----------2---------------
        //但是代码不优雅~

        InputStream inputStream2 = null;
        try {
            inputStream2 = new FileInputStream("D:/test.txt");

        }finally {
            inputStream2.close();

        }


        //----------3---------------
        //try with resources 带有资源的try操作,会在try代码块结束,自动执行close 关闭操作
        //因为 : public abstract class InputStream implements Closeable {
        try(InputStream inputStream1 =new FileInputStream("D:/test.txt")){
            //读文件
            while(true){
                int b = inputStream1.read();
                if(b == -1){
                    //到末尾了,结束循环即可
                    break;
                }
                System.out.printf("%x\n",b);
            }
        }


    }
}
